# encoding: utf-8
module SearchHelper
	
	class Extrato
		attr_accessor :conta_id, :periodo, :nao_quitadas, :omitir_transferencias
		
		#
		#
		def initialize(params={})
			if params
				@conta_id = SearchHelper.normalize_conta_id(params["conta_id"])
				@periodo = SearchHelper.normalize_periodo(params["periodo"])
				@nao_quitadas = params["nao_quitadas"]
				@omitir_transferencias = params["omitir_transferencias"]
			end
		end
		
		#
		#
		def periodo
			(@periodo.nil?) ? Date.today : @periodo
		end

		#
		#
		def nao_quitadas?
			@nao_quitadas == '1'
		end

		#
		#
		def omitir_transferencias?
			@omitir_transferencias == '1'
		end
	end

	class FiltroDespesas
		attr_accessor :conta_id, :periodo, :despesas_futuras
		
		#
		#
		def initialize(params={})
			# tratamento para a conta
			@conta_id = SearchHelper.normalize_conta_id(params["conta_id"])

			# tratamento de período
			@periodo = SearchHelper.normalize_periodo(params["periodo"])
			
			@despesas_futuras = params["despesas_futuras"]
		end

		#
		#
		def periodo
			(@periodo.nil?) ? Date.today : @periodo
		end

		#
		#		
		def despesas_futuras?
			@despesas_futuras == '1'
		end

	end

	#
	#
	def self.normalize_conta_id(_conta_id)
		if !_conta_id.nil? and _conta_id.is_a? String
			return (_conta_id.empty?) ? nil : _conta_id.to_i
		end
	end

	#
	#
	def self.normalize_periodo(_periodo)
		return Date.today unless _periodo

		if _periodo.is_a? Date
			return _periodo
		else
			return Date.new(_periodo["year"].to_i,
											_periodo["month"].to_i,
											_periodo["day"].to_i)
		end			
	end

end
